// Kony

#pragma once

#include "CoreMinimal.h"
#include "AbilitySystem/Abilitys/ProjectileSpeellGameplayAbility.h"
#include "BaseFireBolt.generated.h"

/**
 * 投射物 - 火球术
 */
UCLASS()
class GASC_HUANLING_API UBaseFireBolt : public UProjectileSpeellGameplayAbility
{
	GENERATED_BODY()
public:
	//当前技能描述
	virtual FString GetDescription(int32 Level, const FText& Title, const FText& Description) override;
	//下一级技能描述
	virtual FString GetNextLevelDescription(int32 Level, const FText& Title, const FText& Description) override;
	//创建 发射火球术
	UFUNCTION(BlueprintCallable)
	void SpawnProjectiles(const FVector& ProjectileTargetLocation, const FGameplayTag& SocketTag, bool bOverridePitch, float PitchOverride, AActor* HomingTarget);

protected:
    //多重投射物发射角度
    UPROPERTY(EditDefaultsOnly, Category = "FireBolt")
    float ProjectileSpread = 150.f;
	//多重投射物数量
	UPROPERTY(EditDefaultsOnly, Category = "FireBolt")
	int32 MaxNumProjectiles = 5;
	//自动追踪最小加速度
	UPROPERTY(EditDefaultsOnly, Category = "FireBolt")
	float MinHomingAccelerationSpeed = 1600.f;
	//自动追踪最大加速度
	UPROPERTY(EditDefaultsOnly, Category = "FireBolt")
	float MaxHomingAccelerationSpeed = 3200.f;
	//自动爆炸时间（秒）
	UPROPERTY(EditDefaultsOnly, Category = "FireBolt")
	float AutoExplodeTime = 5.0f;
	//是否开启碰撞指定目标
	UPROPERTY(EditDefaultsOnly, Category = "FireBolt")
	bool bOnlyHitTarget = true;
	
};
